package asposeWords.utils;


import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.OutputStream;
import java.io.Serializable;
import java.nio.file.Files;

/**
 * 文件转换工具类
 */
@Data
@Slf4j
public class FileConvertUtils implements Serializable {


    public static File docToOtherFormat(File docFile,int saveFormat) {
        if (checkFileType(docFile,"doc")){
            File docxFile = new File(docFile.getPath().replace(".doc", "."+SaveFormat.getName(saveFormat)));
            Document document;
            try {
                //获取文件对象输入流,并生成 document 对象
                document = new Document(Files.newInputStream(docFile.toPath()));
                //获取响应的输出流
                OutputStream outputStream = Files.newOutputStream(docxFile.toPath());
                //将数据写入到响应的输出流中,并指定格式
                document.save(outputStream, saveFormat);
                //刷新输出流中的缓冲区
                outputStream.flush();
                //关闭输出流
                outputStream.close();
                //清除 document 产生的数据
                document.cleanup();
                return docxFile;
            } catch (Exception e) {
                log.error(e.getMessage());
            }
        }
        return docFile;
    }

    /**
     * 校验文件格式
     * @param inFile 源文件
     * @param fileType 源文件类型
     * @return
     */
    private static boolean checkFileType(File inFile,String  fileType) {
        return checkFileType(inFile.getName().split("[.]")[1],fileType);
    }
    /**
     * 校验文件格式
     * @param inFileType 源文件名
     * @param fileType 源文件类型
     * @return
     */
    private static boolean checkFileType(String inFileType,String  fileType) {
        return inFileType.toLowerCase().equals(fileType.toLowerCase());
    }

    public static void main(String[] args) {
        docToOtherFormat(new File("E:\\tmp\\1.doc"),SaveFormat.PNG);}
}
